The present invention relates to name services, distributed directories, and other named item location tools for use in a distributed computing system. More particularly, the present invention relates to nametags which are distributed with files, with objects, or with other items, and which are used to correlate location-independent logical names with the location of item copies stored in the distributed system.
Distributed computing systems are becoming increasingly useful and prevalent. Distributed computers are connected by local area networks, wide area networks, and networks of networks, such as the Internet. These distributed computing systems make available platform-neutral, mobile code environments which contain a growing collection of computational objects, applications, data, and other information in the form of files and/or other named resources.
With the growth of such distributed computing systems and their information content, there is an urgent need to support name services that work across heterogeneous systems, services, and platforms. Powerful and convenient name services are needed to achieve seamless distribution of critical computations, and to make the power of such systems available for more widespread use. Name services help users (both human and digital) locate resources. Names can be used by services that enable end-user application programs and by system services to navigate, locate, access, and manipulate mappings between names and specific pieces of digital information such as a file or an object, or between names and specific pieces of equipment such as a printer or a disk array.
Mappings between names and specific resources are called bindings. By properly maintaining and using the bindings, a name service ideally allows users to consistently identify and access the named resources, and to do so without particular regard to the actual location of a copy of the resource. For example, a programmer should be able to invoke a name service interface with the name of a particular resource, and if a copy of the resource exists and can be found, a suitable reference to the copy should be returned. The action of obtaining the location of the actual resource by using the binding is known as name resolution.
For instance, a name service described in U.S. Pat. No. 5,819,044 uses a virtual resource management table having three sorts of fields: name, position, and procedure. For a given virtual resource, the management table creates a correspondence between the virtual resource""s name, the position of an actual resource, and the name of a procedure to handle the actual resource. Name resolution is carried out by using a name as a key into the management table to obtain the position of the corresponding actual resource and the procedure name. Access to the resource then becomes possible.
Name bindings are generally used and understood in a particular context, which is defined by the name service and/or name space(s) involved. A name space may be implemented by syntax conventions and/or by a table that maintains the bindings which are used to resolve references to resources within the name space. In some cases the name space is limited to a single machine. But in other cases it can span multiple machines, as with Novell Directory Services or the CORBA Trader Service. Other examples of name spaces are the Domain Name System (xe2x80x9cDNSxe2x80x9d), the Service Advertising Protocol (xe2x80x9cSAPxe2x80x9d), and, of course, the many different filesystems in use in various networks.
A distributed computing system may contain multiple name spaces, such as low level service advertising name spaces, or high-level directory service name spaces. If the distributed system""s computational objects may be replicated and mobile, it is neither practical nor feasible to require that all names be maintained within a single name space. Accordingly, as the distributed system grows, additional name spaces may be formed in an ad hoc manner for immediate convenience to allow easier and more efficient ways to locate and access computational resources when performing particular tasks.
For example, filesystems assign files to stable permanent locations and give them names which are unique within the given filesystem. When multiple filesystems have been aggregated (as for instance with Transarc""s AFS filesystem), the file name within the filesystem has been prepended with the name of the filesystem or the cell within which the file name was assigned. Therefore, one must know where the file is located, at least to some degree of precision, in order to find the file.
Regardless of whether multiple resource name spaces are in use, a distributed system may include multiple copies of a given resource. For instance, copies of files and objects may be stored in cache memory to reduce access times. Files and objects may also be replicated in nonvolatile storage to create copies on several computers in the system. This may be done to create copies on several servers and/or to create copies on mobile computers that disconnect from the system on occasion.
Sometimes one copy of a resource is preferable to another copy. A cached copy may be preferred over one which has not been cached, and a disk copy on a nearby server may be preferred to one on a distant server. A given copy may also be more recent or otherwise more authoritative than another copy. For instance, one copy may have been more recently updated by a user than another copy, and the two copies may not yet have been synchronized.
To summarize, a computational resource is referred to by one or more names which are input to name services. Name services resolve the name by looking it up in a table of name-to-address or name-to-reference bindings which are contained inside some name space. A resource may have more than one name within a given name space. A resource may also have several names in several name spaces or contexts. The distributed system may contain more than one copy of a resource, with differences between copies due to synchronization delays, retrieval delays, or both. Although existing name services are useful, they have drawbacks.
In particular, it would be an advancement in the art to provide an improved distributed computing system name service which resolves location-independent resource names even when several name spaces are being used in the distributed system.
It would be an additional advancement to provide such an improved name service which allows users to locate preferred copies of resources, such as files and objects which are stored in cache, which are stored locally, and/or which are the most current version available.
Such name service improvements are disclosed and claimed herein.
In one embodiment, the present invention provides a name service which supports name resolution in a distributed computing system by distributing nametags with files, objects, and other items. Item names in the nametags lie in three name spaces, which together form a name system. The three name spaces, which correspond to three storage classes for items, are xe2x80x9cnonvolatilexe2x80x9d, xe2x80x9cvolatilexe2x80x9d, and xe2x80x9clogicalxe2x80x9d, as explained below.
Nonvolatile item names are names of permanent or semi-permanent nonvolatile copies of the item. Nonvolatile item names locate full, authoritative copies of the information which are maintained with algorithms designed to keep them as consistent as is needed by the type of information being stored. Nonvolatile item names resolve to the particular file or object copy using familiar system lookup and finding mechanisms in combination with the nametags and name system of the present invention.
Volatile item names are names of temporary or cached copies of the item or portions of the item. Volatile item names provide rapid access to the information by identifying in-memory copies or copies saved on network nodes which are closer to the location where the information is needed. Volatile item names can be used to retrieve information quickly, but the assurance of finding the information is often lower than if a nonvolatile item name we reused. A transparent cache may intercept requests for nonvolatile items which are locally cached and translate them to requests for local corresponding volatile items to allow retrieval through the cache.
Logical names do not, in themselves, reveal the actual location of information but can be resolved with nametags into nonvolatile item names and/or volatile item names which do contain location information. Several different logical name spaces may be organized by different principles, such as by author, chronology, logical file folder, and so on, so that items can be selected and retrieved according to user context. Each logical name entry in a nametag includes an indication of the name space in which the logical name is meaningful.
Each named item can have one or more instantiations of its nametag stored at various places in the network. Nametags may be contained in network-wide directories to help resolve logical names. A copy of a nametag is also kept with each copy of an item which is pointed to by a volatile item name and/or nonvolatile item name in the nametag.
The nametags are maintained by the name service to reflect changes in the status or existence of item copies. For instance, if an item is mobile, new permanent copies of the item (with new nonvolatile item names) may be created via replication for additional reliability, disconnected operation, or faster local processing. Permanent copies may become permanently unavailable because of a disk crash or a node decommissioning. In response to such events, nonvolatile names may be marked or flagged in the nametag to indicate that the item is no longer available. Copies may also become temporarily inaccessible due to network failures or disconnected operation; corresponding indications may be made for nonvolatile, volatile, and/or logical names of copies so affected. Nonvolatile copies may be downgraded to volatile storage when copies are plentiful and nonvolatile storage is dear. Volatile copies may proliferate when information is being actively used and disappear when accesses decline.
Using the nametags, the name service can resolve location-independent logical names even when several name spaces are being used in the distributed computing system. In addition, the nametags and name service allow users to locate preferred copies of files and objects which are stored in cache, which are stored locally, and/or which are the most current version available. Other features and advantages of the invention will become more fully apparent through the following description.